home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 2
/
Meeting Pearls Vol. II (1995)(GTI - Schatztruhe)[!].iso
/
Pearls
/
gfx
/
Shelly
/
sh.tcl
< prev
next >
Wrap
Text File
|
1994-10-20
|
5KB
|
148 lines
# Tcl/Tk-GUI for Shelly1.5
# start with "wish -file sh.tcl"
# some procedures ...
proc loadfile2 {file} { set fileid [open "$file" r]
.mytext delete 0.0 end
.esave delete 0 end
.esave insert 0 "$file"
.eload insert 0 "$file"
while {[gets $fileid line] >= 0} {
.mytext insert current $line
.mytext insert current "\n"
}
close $fileid
}
proc browse {file} { if [file isfile $file] { loadfile2 $file
destroy .newwin}
}
proc browsegui {} { toplevel .newwin
wm title .newwin "Load"
scrollbar .newwin.broscroll -command ".newwin.brolist yview"
listbox .newwin.brolist -relief raised -yscrollcommand ".newwin.broscroll set"
pack .newwin.broscroll -side right -fill y
pack .newwin.brolist -fill none
set dir .
bind .newwin.brolist <Double-Button-1> {foreach i [selection get] {browse $i}}
focus .newwin.brolist
.newwin.brolist delete 0 end
foreach i [exec ls -a .] { if {$i != "." } { if {$i != ".." } {
.newwin.brolist insert end $i} }}
}
proc loadfile {} { set myerror [catch {set fileid [open [.eload get] r]}]
if {$myerror != 0} {set fileid [open [.eload get].shy r]
.eload insert end ".shy"}
.mytext delete 0.0 end
.esave delete 0 end
.esave insert 0 [.eload get]
while {[gets $fileid line] >= 0} {
.mytext insert current $line
.mytext insert current "\n"
}
close $fileid
}
proc savefile {} { set fileid [open [.esave get] w]
puts $fileid [.mytext get 0.0 end]
close $fileid
}
proc neuload {} { if {[.eload get] == ""} {browsegui} else {loadfile}}
proc calcshell {} { set fileid [open /tmp/[.esave get].tmp w]
puts $fileid [.mytext get 0.0 end]
close $fileid
exec shelly /tmp/[.esave get].tmp [.eShout get] &
}
proc calcrender {} { set fileid [open /tmp/[.esave get].tmp w]
puts $fileid [.mytext get 0.0 end]
puts $fileid "POV\nRENDER\n"
puts $fileid "camx:[.ecamx get]\n"
puts $fileid "camy:[.ecamy get]\n"
puts $fileid "camz:[.ecamz get]\n"
close $fileid
exec shelly /tmp/[.esave get].tmp [.eShout get] &
}
proc calcdispl {} { set fileid [open /tmp/[.esave get].tmp w]
puts $fileid [.mytext get 0.0 end]
puts $fileid "X3D\n"
close $fileid
exec shelly /tmp/[.esave get].tmp [.eShout get]
exec x3d [.eShout get] &
}
proc reinit {} { .mytext delete 0.0 end
.esave delete 0 end
.eload delete 0 end
}
# create hierachical geometry
frame .buttons
frame .uhalf
frame .text
frame .rhalf
frame .labels
frame .entries
pack .buttons -in . -side bottom
pack .uhalf -in . -side top
pack .text -in .uhalf -side left -padx 3m -pady 3m
pack .rhalf -in .uhalf -side right
pack .labels -in .rhalf -side left
pack .entries -in .rhalf -side right
# create Text-widget
text .mytext -yscrollcommand ".scroll set" -relief sunken -borderwidth 2 -width 50
scrollbar .scroll -relief flat -command ".mytext yview"
pack .scroll -in .text -side right -fill y
pack .mytext -in .text -fill none
.mytext insert current "Welcome to the Tcl/Tk-GUI for Shelly1.5"
# create Labels & Entries
label .lload -text "Load:"
label .lsave -text "Save:"
label .lShout -text "Shelly/Outp.:"
label .lcamx -text "camx:"
label .lcamy -text "camy:"
label .lcamz -text "camz:"
pack .lload .lsave .lShout .lcamx .lcamy .lcamz -in .labels -side top -anchor w -pady 2m -padx 2m
entry .eload -relief sunken
bind .eload
entry .esave -relief sunken
entry .eShout -relief sunken
.eShout insert 0 "/tmp/shell"
entry .ecamx -relief sunken
.ecamx insert 0 "0"
entry .ecamy -relief sunken
.ecamy insert 0 "10"
entry .ecamz -relief sunken
.ecamz insert 0 "10"
pack .eload .esave .eShout .ecamx .ecamy .ecamz -in .entries -side top -anchor w -pady 2m -padx 2m
# create Buttons
button .bnew -text " New! " -command reinit
button .bload -text " Load " -command neuload
button .bsave -text " Save " -command savefile
button .bcalc -text " Calc " -command calcshell
button .bcalcrender -text " Calc & Render " -command calcrender
button .bcalcdisplx3d -text " Calc & Display X3D " -command calcdispl
button .bexit -text " Exit! " -command "destroy ."
pack .bload .bsave .bcalc .bcalcrender .bcalcdisplx3d .bnew .bexit -in .buttons -side left -padx 4m -pady 3m